【PHP入門】配列の値を検索するarray |
您所在的位置:网站首页 › php array_ › 【PHP入門】配列の値を検索するarray |
PHPでは、配列の値を検索するさまざまな方法があるのをご存知ですか? #目次 1.はじめに 2.内容い 3.内容ろ 4.内容は 5.おわりに #目次 [1.配列の値を検索する方法](# 1-配列の値を検索する方法) 2.複数の配列の値を検索する方法 3.多次元配列の値を検索する方法 4.正規表現を使用して検索する方法 5.おわりに などの基本的な内容から、応用的な方法に関しても解説していきます。 最後に関数をまとめた表もあるので、先にどういった関数があるのか知りたい方は、そちらから見てくださいね。 今回はそんな配列の値を検索する方法について、わかりやすく解説します! #1. はじめに #2. 内容い #3. 内容ろ #4. 内容は #5. おわりに #1. 配列の値を検索する方法 配列の値を検索する基本的な方法にarray_search関数が使われます。 また似た関数でin_array関数もあります。 それぞれの使い方と、違いを見ていきましょう。 array_searchを使用する配列の値を検索するのに使われる基本的な関数array_searchは、検索した要素がある場合要素番号を返してくれます。 基本構文 array_search(検索する値, 検索対象の配列, 型の比較を行うか) 第一引数には、検索したい要素(値)を指定します。第二引数ではどの配列から検索したいか、検索する配列名を指定します。第三引数にtrueを指定すると型の比較も行います。省略可能。 検索する値が見つかった場合は値のインデックスキー(要素番号)を、その他の場合はfalseを返します。 では実際に配列$arrayの中にPHPという要素が入っているかを検索する基本的なサンプルコードをみてみましょう。 サンプルコード1 $array = ['JAVA', 'PHP', 'Python']; $result = array_search('PHP', $array); print_r($result);実行結果 1検索する値'PHP'が検索対象の配列$arrayの中のインデックスキー0から数えて1番目にあるので、1が返されました。 検索する値が文字列の場合、大文字小文字は区別して比較が行われます。 サンプルコード2 $array = ['JAVA', 'PHP', 'Python']; $result = array_search('JavaScript', $array); var_dump($result);実行結果 bool(false) 検索する値'JavaScript'は検索対象の配列$arrayに存在しないので、falseが返されます。第三引数を指定しない場合、型の比較は行いません。今回は検索する要素の型も見るためvar_dumpで出力していますが、結果がfalseなので真偽値型のboolが出力されています。 要素の型の比較まで行う場合には、第三引数にtrueを指定します。 サンプルコード3 $array = ['1', '2', 3]; $result = array_search(2, $array, true); var_dump($result);実行結果 bool(false)第三引数にtrueを指定したこのサンプルでは、型の比較も行うため検索する値の整数2と配列の文字列'2'は別のものとみなされ、falseが返されます。 第三引数を指定しない場合、整数2と文字列’2’は同じものとみなされるので注意が必要です。引数の型まで正確に比較を行いたい場合は、必ず第三引数にtrueを指定しましょう。 検索する値が配列に複数ある場合は、最初の値のインデックスキーのみが返されます。 in_arrayを使用する関数in_arrayを使って配列の値を検索すると、要素に検索した値があるか・無いかのtrueまたはfalseで返します。 基本構文 in_array(検索する値, 検索対象の配列, 型の比較を行うか) 引数はarray_searchと同じです。 第一引数には、検索したい要素(値)を指定します。第二引数ではどの配列から検索したいか、検索する配列名を指定します。第三引数にtrueを指定すると、型の比較も行います。省略可能。 検索する値が見つかった場合はtrue、その他の場合はfalseを返します。 array_search関数と引数も同じでよく似ていますが、戻り値がインデックスキーではなくtrueまたはfalseである点が異なります。 サンプルコード $array = ['JAVA', 'PHP', 'Python']; // 'PHP'を検索 $result1 = in_array('PHP', $array); var_dump($result1); echo ''; // 'JavaScript'を検索 $result2 = in_array('JavaScript', $array); var_dump($result2);実行結果 bool(true) bool(false)実行結果のとおり、in_array関数で第一引数に指定した値が配列に存在する場合はtrueを返し、存在しない場合はfalseを返していますね。 第三引数の使い方もarray_search関数と同様で、型の比較まで行う場合はtrueを指定します。 #2. 複数の値を検索する方法 検索する値が配列に複数ある場合でも、array_search関数は最初の値のインデックスキーのみを返しました。 全てのインデックスキーを取得したい場合は、array_keys関数を使います。 基本構文 array_keys(検索対象の配列, 検索する値) 第一引数に検索する配列の配列名を指定します。第二引数に検索する値を指定します。省略可能。 array_search関数やin_array関数と引数の順番が違う点に注意してください。array_search関数は検索して見つかった全てのインデックスキーを配列にして返してくれます。 第二引数を省略した場合は配列すべてのインデックスキーが返されます。 サンプルコード $array = ['JAVA', 'PHP', 'Python', 'PHP']; $result = array_keys($array, 'PHP'); var_dump($result);実行結果 array(2) { [0]=> int(1) [1]=> int(3) }見つかった複数の値が、配列で返されているのが分かりますね。 #3. 多次元配列の値を検索する方法 array_search関数やin_array関数は多次元配列の値を検索することができません。 そのため多次元配列で値を検索する場合は、array_column関数を指定します。 基本構文 array_column(値を取り出したい多次元配列, 値を返したいカラム) 第一引数で検索したい多次元配列の配列名を指定します。第二引数のカラムは、連想配列などのキーになる部分のことで、要素のキー名を指定して、取り出します。 指定したカラムの要素だけを取り出しそのカラムで構成された配列を返します。 以下にarray_column関数で多次元配列の中にある特定の名前を検索し、array_search関数でその名前が配列の何番目にあるかを検索するサンプルコードを見ていきましょう。 サンプルコード $arrays = [ 0 => [ 'id' => 1, 'name' => 'Tanaka', 'age' => 30, ], 1 => [ 'id' => 2, 'name' => 'Yamada', 'age' => 25, ], 2 => [ 'id' => 3, 'name' => 'Satou', 'age' => 20, ], 3 => [ 'id' => 4, 'name' => 'Hayashi', 'age' => 40, ], ]; $nameArray = array_column($arrays, 'name'); var_dump($nameArray); echo ' '; $result = array_search('Satou', $nameArray); var_dump($result);実行結果 array(4) { [0]=> string(6) "Tanaka" [1]=> string(6) "Yamada" [2]=> string(5) "Satou" [3]=> string(7) "Hayashi" } int(2)まずarray_column関数を使って'name'だけの配列$nameArrayを作成します。配列$nameArrayをarray_search関数に渡して変数$resultに結果を代入します。 指定した名前'Satou'が配列$nameArrayの何番目にあるかが出力されました。 #4. 正規表現を使用して検索する方法 正規表現とは特定の文字列からパターンになっている(文字列)部分を表すために使用されます。 array_searchとin_array関数では検索する値に正規表現を使うことができません。 検索する値が文字列の正規表現を使う場合にはpreg_grep関数を使います。 基本構文 preg_grep(検索するパターン文字列, 検索対象の配列) 第一引数に検索したいパターンの文字列を指定します。第二引数には、検索する配列の配列名を指定します。 preg_grep関数は検索対象の配列の値のうち、指定したパターン文字列にマッチする要素で構成された配列を返します。 preg_grep関数を使って、配列から全て数字の文字列(正規表現で表すと'/^[0-9]+$/')を取り出すサンプルコードを見てみましょう。 サンプルコード $array = ['abc', '123', 'de4', '56f', 'ghi', '789']; $result = preg_grep('/^[0-9]+$/', $array); var_dump($result);実行結果 array(2) { [1]=> string(3) "123" [5]=> string(3) "789" }全て数字の文字列はインデックスキー0から数えて1番目の'123'と5番目の'789'が対象となります。 配列$arrayのインデックスキー1番目と5番目で構成された配列が返されているのが分かりますね。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |